package com.hmkj.core.service.account;

import com.hmkj.core.constant.Constant;
import com.hmkj.core.constant.Enum;
import com.hmkj.core.po.account.Account;
import com.hmkj.core.po.account.AccountLog;
import com.hmkj.core.po.order.Order;
import com.hmkj.core.service.base.GenericService;

import java.math.BigDecimal;

/**
 * 资金记录业务相关Service接口<br>
 *
 * @author eproo
 * @ClassName: AccountLogService
 * @date 2018-07-05 09:50:54
 */
public interface AccountLogService extends GenericService<Integer, AccountLog> {

    /**
     * 根据类型统计操作金额
     *
     * @param type   操作类型
     * @param userId 用户ID
     * @return
     */
    BigDecimal selectSumByType(AccountLog.TYPE type,AccountLog.TYPE type1, Integer userId);

    /**
     * 根据类型和资金流向统计操作金额
     *
     * @param direction 资金流向
     * @param type      操作类型
     * @param userId    用户ID
     * @return
     */
    BigDecimal selectSumByAirectionType(AccountLog.DIRECTION direction, AccountLog.TYPE type, Integer userId);

    BigDecimal selectSumAmountByType(AccountLog.TYPE type, String startTime, String endTime);

    /**
     * 平台的资金日志
     *
     * @param account   待处理账户
     * @param order     订单
     * @param sellerFee 待操作金额
     * @param direction 资金方向
     */
    void generateLogForPlat(Order order, Account account, BigDecimal sellerFee, Enum.Direction direction, Constant.ACCOUNT_TYPE accountType);
}
